<?php

class Hora extends AppModel {

    var $name = 'Hora';
    var $displayField = 'inicio';
    var $horaAtiva = null;
    var $virtualFields = array(
        'total' => 'TIMEDIFF(Hora.fim, Hora.inicio)'
    );
    
    //The Associations below have been created with all possible keys, those that are not needed can be removed
    var $belongsTo = array(
        'Tarefa' => array(
            'className' => 'Tarefa',
            'foreignKey' => 'tarefa_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
        'Usuario' => array(
            'className' => 'Usuario',
            'foreignKey' => 'usuario_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );

    function controle($tarefa_id, $usuario_id) {
        $contagem_ativa = $this->find('first', array(
                    'conditions' => array(
                        'Hora.usuario_id' => $usuario_id,
                        'Hora.fim' => NULL
                    ),
                    'fields' => array('id', 'tarefa_id'),
                    'order' => array('id DESC'),
                ));

        if (isset($contagem_ativa) && is_array($contagem_ativa) && count($contagem_ativa) > 0) {
            $this->fim($contagem_ativa['Hora']['id']);

            $this->horaAtiva = null;

            if ($contagem_ativa['Hora']['tarefa_id'] != $tarefa_id) {
                $this->horaAtiva = $tarefa_id;
                $this->inicio($tarefa_id, $usuario_id);
            }
        } else {
            $this->horaAtiva = $tarefa_id;
            $this->inicio($tarefa_id, $usuario_id);
        }
        return $this->horaAtiva;
    }

    function inicio($tarefa_id, $usuario_id) {
        $data = array(
            'tarefa_id' => $tarefa_id,
            'inicio' => date('Y-m-d h:i:s'),
            'usuario_id' => $usuario_id
        );
        $this->id = null;
        $this->create();
        $this->save($data);
        return $this->id;
    }

    function fim($id) {

        $data = array(
            'fim' => date('Y-m-d h:i:s'),
            'id' => $id
        );
        $this->id = $id;
        $this->save($data);
    }

}

?>